package com.wva.video.service;

import com.wva.video.domain.dto.CheckChunksDTO;
import com.wva.video.domain.dto.SetChunkMd5DTO;
import com.wva.video.domain.vo.CheckChunksVO;

/**
 * 视频上传相关操作
 * @Author: hong
 * @Date: 2025/2/8 23:03:39
 */
public interface VideoUploadService {
    /**
     * 检查文件分片状态
     *
     * @param checkChunksDTO
     * @return
     */
    CheckChunksVO checkChunks(CheckChunksDTO checkChunksDTO) throws Exception;

    /**
     * 设置分片md5，用于合并分片后进行完整性校验
     * @param setChunkMd5DTO
     */
    void setChunkMd5(SetChunkMd5DTO setChunkMd5DTO);

    /**
     * 合并所有分片
     * @param fileMd5
     * @return
     */
    void mergeChunks(String fileMd5) throws Exception;

    /**
     * 删除上传的分片文件
     * @param videoMd5
     * @throws Exception
     */
    void removeVideoPartsByMd5(String videoMd5) throws Exception;

    /**
     * 删除合并后的临时视频文件
     * @param videoMd5
     * @throws Exception
     */
    void removeTempVideoByMd5(String videoMd5) throws Exception;

    /**
     * 分块文件是否合并完毕
     * @param videoMd5
     */
    boolean isChunksMerged(String videoMd5);
}
